package com.marketing.tenant.service;

import com.marketing.tenant.entity.Tenant;

import java.util.List;

/**
 * 租户服务接口
 */
public interface TenantService {

    /**
     * 创建租户
     * @param tenant 租户信息
     * @return 创建的租户
     */
    Tenant createTenant(Tenant tenant);

    /**
     * 根据ID获取租户
     * @param id 租户ID
     * @return 租户信息
     */
    Tenant getTenantById(Long id);

    /**
     * 根据租户编码获取租户
     * @param tenantCode 租户编码
     * @return 租户信息
     */
    Tenant getTenantByCode(String tenantCode);

    /**
     * 更新租户信息
     * @param tenant 租户信息
     * @return 更新后的租户信息
     */
    Tenant updateTenant(Tenant tenant);

    /**
     * 删除租户（逻辑删除）
     * @param id 租户ID
     * @return 是否删除成功
     */
    boolean deleteTenant(Long id);

    /**
     * 获取所有租户列表
     * @return 租户列表
     */
    List<Tenant> getAllTenants();

    /**
     * 根据状态获取租户列表
     * @param status 状态
     * @return 租户列表
     */
    List<Tenant> getTenantsByStatus(Integer status);

    /**
     * 激活租户
     * @param id 租户ID
     * @return 是否激活成功
     */
    boolean activateTenant(Long id);

    /**
     * 暂停租户
     * @param id 租户ID
     * @return 是否暂停成功
     */
    boolean suspendTenant(Long id);

    /**
     * 检查租户是否存在
     * @param tenantCode 租户编码
     * @return 是否存在
     */
    boolean existsByTenantCode(String tenantCode);

    /**
     * 检查邮箱是否已被使用
     * @param email 邮箱
     * @return 是否已使用
     */
    boolean existsByEmail(String email);
}